/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package MPersistencia;


import Conceptos.Auxiliar;
import Conceptos.Parametro;
import Utilidades.ManejadorBaseDatos;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.LinkedList;
import java.util.List;

/**
 *
 * @author dell
 */
public class MPParametro {
    
    
        public static ManejadorBaseDatos mbd=ManejadorBaseDatos.getInstancia();
    public static Connection con;

public static  Parametro getParametro(String codigo) throws SQLException, Exception {
    mbd.conectar();
    con=mbd.getConexion();
    if (codigo == null) {
          throw new SQLException("No hay elemento clave de la clase parametros");
     }
         ResultSet rs = null;
         PreparedStatement pst = null;
         Parametro parametro = null;
     try {
         pst = con.prepareStatement("select * from parametros where codigo_parametro = ?");
         pst.setString(1, codigo.trim());
         
         rs = pst.executeQuery();
         
         //System.out.println(pst.toString());
         while(rs.next()) {
             parametro = Parametro.load(rs);
          
         }
        
    } finally {
         if (rs != null) {
            rs.close();
         }
         if (pst != null) {
           pst.close();
         }
          return parametro;
    }}
public static  Parametro getParametrotipocodgo(String codigo,String tipo) throws SQLException, Exception {
    mbd.conectar();
    con=mbd.getConexion();
    if (codigo == null) {
          throw new SQLException("No hay elemento clave de la clase parametros");
     }
         ResultSet rs = null;
         PreparedStatement pst = null;
         Parametro parametro = null;
     try {
         pst = con.prepareStatement("select * from parametros where codigo_parametro = ? and tipo = ?");
         pst.setString(1, codigo.trim());
         pst.setString(2, tipo.trim());
         
         rs = pst.executeQuery();
         
         //System.out.println(pst.toString());
         while(rs.next()) {
             parametro = Parametro.load(rs);
          
         }
        
    } finally {
         if (rs != null) {
            rs.close();
         }
         if (pst != null) {
           pst.close();
         }
          return parametro;
    }
}
public static  Parametro getParametrotipo(String tipo) throws SQLException, Exception {
    mbd.conectar();
    con=mbd.getConexion();
    if (tipo == null) {
          throw new SQLException("No hay elemento clave de la clase parametros");
     }
         ResultSet rs = null;
         PreparedStatement pst = null;
         Parametro parametro = null;
     try {
         pst = con.prepareStatement("select * from parametros where tipo = ?");
         pst.setString(1, tipo.trim());
         
         rs = pst.executeQuery();
         
         //System.out.println(pst.toString());
         while(rs.next()) {
             parametro = Parametro.load(rs);
          
         }
        
    } finally {
         if (rs != null) {
            rs.close();
         }
         if (pst != null) {
           pst.close();
         }
          return parametro;
    }
}
public static  void crearParametro(Parametro parametro) throws SQLException, Exception {
     mbd.conectar();
    con=mbd.getConexion();
    if (con == null ) {
          throw new SQLException(" no hay conexion ");
    }
     PreparedStatement pst = null;
     try {
          pst = con.prepareStatement("Insert Into parametros values(?,?,?)");
          pst.setString(1,parametro.getCodigo());
          pst.setString(2,parametro.getDescripcion());
          pst.setString(3,parametro.getTipo());
          pst.executeUpdate();
    }finally {
        if (pst != null) {
             pst.close();
        }
   }
}
public static  void updateParametrocodigotipo (Parametro parametro, String codigo ,String tipo) throws SQLException, Exception {
    mbd.conectar();
    con=mbd.getConexion();
    if ( getParametro(codigo) == null) {
           throw new SQLException ("Parametro no registrado ");
       }
       PreparedStatement pst = null;
      ResultSet rs = null;
       try {
         pst = con.prepareStatement("Update parametros set  descripcion= ? where codigo_parametro= ? and tipo=? ");
         pst.setString(1, parametro.getTipo());
         pst.setString(2 , codigo);
         pst.setString(3 , tipo);
        pst.executeUpdate();
       
       } finally {
          if (pst != null) 
            pst.close();
          
       }
         
 }
public static  void updateParametrocodigo (Parametro parametro, String codigo) throws SQLException, Exception {
    mbd.conectar();
    con=mbd.getConexion();
    if ( getParametro(codigo) == null) {
           throw new SQLException ("Parametro no registrado ");
       }
       PreparedStatement pst = null;
      ResultSet rs = null;
       try {
         pst = con.prepareStatement("Update parametros set codigo_parametro= ?, descripcion= ?, tipo=? where codigo_parametro= ?  ");
         pst.setString(1 , parametro.getCodigo());
         pst.setString(2 , parametro.getDescripcion());
         pst.setString(3 , parametro.getTipo());
         pst.setString(4 , codigo);
        pst.executeUpdate();
       
       } finally {
          if (pst != null) 
            pst.close();
          
       }
         
 }
public static  boolean deleteParametro(String codigo) throws SQLException, Exception {
    mbd.conectar();
    con=mbd.getConexion();
    if (getParametro(codigo) == null) {
        throw new SQLException("No hay elemento clave de la clase Auxiliar");
     }
     PreparedStatement pst = null;
     boolean res = false;
     try {
        pst = con.prepareStatement("DELETE FROM parametros WHERE codigo_parametro=?");
        pst.setString(1, codigo.trim());
        int r = pst.executeUpdate();
        if (r != 0) {
           res = true;
        }
     } finally {
        if (pst != null) {
           pst.close();
        }
     }
     return res;
}
public static  List<Parametro> listarParametros() throws SQLException, Exception {
    mbd.conectar();
    con=mbd.getConexion();
    ResultSet rs = null;
     PreparedStatement pst = null;
     List<Parametro> listaparametros = new LinkedList();
     try {
        pst = con.prepareStatement("select * from  parametros  ");
        rs = pst.executeQuery();
        while(rs.next()) {
         listaparametros.add(Parametro.load(rs));
        }
    } finally {
        if (rs != null) {
           rs.close();
       }
        if (pst != null) {
          pst.close();
       }
    }
    return listaparametros;
    }
public static  List<Parametro> listarParametrostiposinsitu(String parametro) throws SQLException, Exception {
    mbd.conectar();
    con=mbd.getConexion();
    ResultSet rs = null;
     PreparedStatement pst = null;
     List<Parametro> listaparametros = new LinkedList();
     try {
         pst = con.prepareStatement("select * from parametros where tipo = ? ");
        pst.setString(1, parametro.trim());
        rs = pst.executeQuery();
        while(rs.next()) {
         listaparametros.add(Parametro.load(rs));
        }
    } finally {
        if (rs != null) {
           rs.close();
       }
        if (pst != null) {
          pst.close();
       }
    }
    return listaparametros;
    }
}
